<!DOCTYPE html>
<style>
  #scroller {
    height: 100px;
    width: 100px;
    overflow: scroll;
    background-color: red;
  }

  #content {
    width: 100px;
    height: 100px;
    background: green;
  }
</style>

<div id="scroller">
  <div id="content"></div>
</div>

<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>

<script>
test(t => {
  var scroller = document.querySelector("#scroller");
  var content = document.querySelector("#content");

  content.style.transform = "translateX(400px)";
  assert_equals(scroller.scrollWidth, 500);

  scroller.scrollLeft = 300;
  assert_equals(scroller.scrollLeft, 300);

  // make a non-layout inducing change that updates the overflow
  content.style.transform = "translateX(100px)";
  assert_equals(scroller.scrollWidth, 200);
  assert_equals(scroller.scrollLeft, 200 - scroller.clientWidth /* max scroll offset */);
}, "Verify that scroll offset clamps correctly when overflow rect is changed " +
   " as a result of a transform (i.e., a non-layout inducing change)");
</script>
